package cn.iocoder.yudao.module.dine.product.pojo.vo;

import cn.iocoder.yudao.framework.business.basic.annotation.AdminJsonView;
import cn.iocoder.yudao.framework.business.basic.annotation.AppJsonView;
import cn.iocoder.yudao.framework.business.basic.pojo.vo.MerchantScopeVO;
import com.fasterxml.jackson.annotation.JsonView;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * 视图对象
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/07/18
 */
@Data
public class DineProductVO extends MerchantScopeVO {

    @Schema(description = "分类编号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Long categoryId;
    @Schema(description = "分类名称")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String categoryName;

    @Schema(description = "标题")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String title;

    @Schema(description = "描述")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String description;

    @Schema(description = "封面图片")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String coverUrl;

    @Schema(description = "属性：1=主食 2=荤菜 3=素菜 4=锅底 5=汤 6=套餐 99=备注")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer attribute;

    @Schema(description = "计量单位，如个、克、毫升等")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String unitName;

    @Schema(description = "计量数值，如1个、200克")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer unitValue;

    @Schema(description = "销售价，单位分，按称量计价时为0")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer price;

    @Schema(description = "最小限购，0=不限")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer minQuantity;

    @Schema(description = "最大限购，0=不限")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer maxQuantity;

    @Schema(description = "是否必选")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Boolean required;

    @Schema(description = "是否高端菜，高端菜支持优惠券、满减、限时折扣等")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Boolean upscale;

    @Schema(description = "是否可预订")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Boolean reservable;

    @Schema(description = "0=已下架 1=销售中 2=已售罄")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer status;

    @Schema(description = "标签，英文逗号分隔")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private List<String> labels;

    @Schema(description = "排序，越小越靠前")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer sort;

}
